import org.omg.PortableInterceptor.INACTIVE;

/**
 * Created whit IntelliJ IDEA.
 * Description：
 * User：ZHONGCHEN
 * Date:2022-02-16
 * Time:22:57
 */
/**
 * 7. 整数反转
 * 给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。

 如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ，就返回 0。

 来源：力扣（LeetCode）
 链接：https://leetcode-cn.com/problems/reverse-integer
 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。*/
public class TestDemo {
    public static int reverse(int x) {
        long num = 0;
        if (x > 0) {
            while (x != 0) {
                num = num * 10 + x % 10;
                x = x / 10;
            }
        } else {
            x = x * -1;
            while (x != 0) {
                num = num * 10 + x % 10;
                x = x / 10;
            }
            num *= -1;
        }
        //当数字反正之后大于int的最大值或者小于int的最小值时返回0;因为此时数值很大,所以
        //num用long而不是int
        if (num > Integer.MAX_VALUE || num <Integer.MIN_VALUE){
            return 0;
        }
        return (int)num;
    }
    public static int reverse1(int x) {
        long n = 0;
        while(x != 0) {
            n = n*10 + x%10;
            x = x/10;
        }
        return (int)n==n? (int)n:0;
    }
    public static void main(String[] args) {
        System.out.println(reverse1(-123));
    }
}
